package il.ac.tau.cg.ex3.math.shapes;

import il.ac.tau.cg.ex3.math.Params;
import il.ac.tau.cg.ex3.math.Point;
import il.ac.tau.cg.ex3.math.Vector;
import il.ac.tau.cg.ex3.utils.octree.BoundingBox;

import java.util.SortedSet;

public abstract class Shape implements Intersectable, Parameterizable, Bounded
{
	public abstract Vector getNormal(Point p);
	
	@Override
	public abstract Params getParams(Point p);
	
	@Override
	public abstract SortedSet<Double> intersect(Point origin, Vector direction);
	
	@Override
	public abstract BoundingBox getBoundingBox();
}
